\subsubsection{Manuel d'installation et de configuration}

\normalsize{\textbf{Installation Linux \& Windows}}

Cette partie est commune aux deux systèmes d'exploitations, à la différence qu'elle n'a pas besoin d'être faite sur les versions les plus récentes d'Ubuntu, où toutes les étapes ont déjà été effectuées. Avant toute chose, il faut donc vérifier la présence (et dans le cas échéant les installer dans l'ordre indiqué) de :\\

\begin{itemize}
  \item Java Standard Edition v6 Development Kit (Java SE 6 JDK)\cite{JavaSDK}
  \item Android Software Development Kit (Android SDK)\cite{AndroidSDK}
  \item Eclipse\cite{EclipseSDK}\\
\end{itemize}

Il faut ensuite mettre à jour Eclipse avec la suite ADT, les Android Development Tools\cite{ADTInstallation}. Pour ce faire, une fois Eclipse lancé, il faut faire \emph{Help} > \emph{ Install New Software...} > \emph{Add}, et y entrer l'URL d'ADT\cite{ADTEclipse}. Une fois ADT téléchargé et installé, Eclipse doit être redémarré.\\

\normalsize{\textbf{Configuration}}

A partir de cette étape, même sur les versions les plus récentes d'Ubuntu, il est obligatoire de procéder aux opérations suivantes :\\

\begin{itemize}
  \item Configurer Eclipse dans \emph{Windows} > \emph{Preferences} > \emph{Android} > \emph{SDK Location} : indiquer le lieu l'installation du SDK Android
  \item Mettre à jour ADT dans \emph{Windows} > \emph{Android SDK and AVD Manager} > \emph{Available packages} > \emph{Android Repository} : indiquer les plate-formes Android dont l'on souhaite disposer. Il est nécessaire d'en avoir au moins une, et les versions exactes requises dépendent des "cibles" que vous souhaitez atteindre (ex: un téléphone en 1.6, etc.)
  \item Créer un AVD dans \emph{Windows} > \emph{Android SDK and AVD Manager} > \emph{Virtual devices} > \emph{New...} : indiquer dans \emph{Target} la plate-forme Android pour laquelle on pourra l'utiliser (ex: Android 2.3.3 - API Level 10) et dans \emph{SD Card} mettre une taille (ex - Size: 9 MiB)\\
\end{itemize}

Un AVD est un Android Virtual Device. Il sert à émuler une plate-forme Android pour tester les projets.

\subsubsection{Gestion d'un projet Android}

\normalsize{\textbf{Création}}

Dans l'affichage des projets d'Eclipse, il faut faire clic-droit > \emph{New} > \emph{Project} > \emph{Android Project}, et en remplir les spécifications. En voila un exemple, pour un projet HelloAndroid:

\begin{verbatim}
* Project name: HelloAndroid
* Application name: Hello, Android
* Package name: com.example.helloandroid (ou n'importe quel nom tant qu'il est de la forme com.xxx)
* Create Activity: HelloAndroid
* Min SDK Version: 10 (dépend de la plate-forme Android installée et de celle de l'AVD).
\end{verbatim}

Il faut ensuite remplir ce projet de code. Encore une fois, voila un exemple qui affiche "Hello, Android" à l'écran:\\

\shadowbox{
\begin{lstlisting}[breaklines=true, breakatwhitespace=true]
package com.android.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       tv.setText("Hello, Android");
       setContentView(tv);
   }
}
\end{lstlisting}}
\newline

Lancer l'option Run sur ce code va lancer l'AVD, l'émulateur de terminal Android. Attention : les AVDs viennent parfois avec des programmes pré-installés, comme une démonstration de l'API, qui peuvent alors entrer en conflit avec les votres. Il faut dans ce cas les désinstaller.\\

\normalsize{\textbf{Connexion avec un terminal}}

Cette partie n'est nécessaire que pour les tablettes Android, et en particulier a été écrit pour les tablettes Android Ideos S7 nous ayant été fournies, bien que la démarche soit similaire pour d'autres variantes.\\

Une fois la tablette reliée à l'ordinateur par son cordon USB, il faut, dans le menu de celle-ci, choisir les Applications (le logo avec quatre carrés) et aller dans \emph{Settings} > \emph{Applications} > \emph{Development} pour y allumer le USB Debugging. Attention, la tablette va émettre un bruit assez fort, pensez à la mettre en mode Silencieux avant !\\

Une fois cette étape faite, il faut que votre ordinateur puisse reconnaitre la tablette. La démarche est différente si vous êtes sur Linux\cite{TabletteConnexionLinux} ou sur Windows (il faut télécharger le driver sur le site du constructeur\cite{TabletteConnexionWindows}).\\

A partir de maintenant, et quand la tablette est connectée, dans Eclipse et son panneau \emph{Run} > \emph{Run} la tablette Ideos sera disponible. Il faut la sélectionner pour lancer le programme dessus plutôt que sur un AVD. L'application-test devrait alors normalement se lancer sur la tablette.\\

\textbf{\large{Attention !}}\\
Il faut d'abord vérifier la version d'Android installée sur la tablette, et éventuellement télécharger l'API appropriée pour ADT et s'assurer que le projet y corresponde (les tablettes fournies sont en version 2.1, voir \textbf{Configuration} plus haut). Il est alors nécessaire de changer le Project Build Target (alias le niveau de l'API et de la plate-forme) dans les Propriétés du projet. Il est parfois nécessaire que le projet soit flaggé comme debuggable dans le fichier \textit{AndroidManifest.xml} en ajoutant \textit{android:debuggable="true"} à la balise <application> pour que le transfert fonctionne.\\

Il est également possible que l'importation d'un projet déjà existant sous Eclipse provoque des erreurs. Dans ce cas, il faut le sélectionner, et faire clic-droit > \emph{Android Tools} > \emph{Fix Project Properties} puis le rafraichir (clic-droit > \emph{Refresh}), voir le nettoyer (\emph{Project} > \emph{Clean}).\\

\subsubsection{Programmation Android avancée}

\normalsize{\textbf{L'API Google}}

Google offre une API standard permettant de "piocher" des fonctionnalités dans certains de leurs services, comme Google Map.\\

\begin{itemize}
  \item Dans Eclipse, faire \emph{Windows} > \emph{Android SDK and AVD Manager} > \emph{Available packages}, et y sélectionner \emph{Third-Party Addons}. Télécharger les API Googles correspondant à celles de votre SDK (ex: Android SDK version 2.1 correspond à l'API de niveau 7, prenez donc la Google API 2.1 correspondant au niveau 7)
  \item Clic-droit sur le projet, \emph{Properties} > \emph{Android} : sélectionner l'API Google correspondant à celui du projet
  \item Vous pouvez maintenant utiliser des applications Google telles que Google Map, fournies dans le package com.google.android
  \item Attention, vous devez créer un nouvel AVD basé sur cette API si vous voulez pouvoir l'utiliser en émulateur\\
\end{itemize}

La programmation Android en utilisant l'API Google nécessite souvent des permissions et bibliothèques supplémentaires qu'il faut signaler dans le fichier \textit{AndroidManifest.xml}. De même, pour certaines fonctionnalités telles que Google Map, il faut s'enregistrer aux services Google\cite{GoogleAPIKey} par rapport à l'empreinte de votre ordinateur.\\

\normalsize{\textbf{Utiliser deux AVDs}}

Particulièrement utile dans le cas, par exemple, d'applications basées sur l'envoi et la réception de SMS, il est possible de créer deux AVDs (prendre garde à leur donner le même niveau et les mêmes paramètres) et de les lancer en même temps en faisant Run deux fois et en sélectionnant un AVD différent à chaque fois. Les AVDs peuvent alors communiquer entre eux ! Par exemple, le numéro s'affichant en haut à gauche de la fenêtre de l'AVD (ex: 5554:<nom AVD1>, 5556:<nom AVD2>) est celui qu'il faut entrer pour les tests d'appels téléphoniques et d'envoi/réception de SMS. Remplacez juste le 0556XXXXXX habituel par 5554 ou 5556.\\

\normalsize{\textbf{Liens utiles}}
\begin{itemize}
\item \url{http://developer.android.com/sdk/installing.html}
\item \url{http://developer.android.com/sdk/eclipse-adt.html}
\item \url{http://developer.android.com/guide/developing/eclipse-adt.html}
\item \url{http://developer.android.com/guide/tutorials/hello-world.html}
\item \url{http://developer.android.com/resources/tutorials/views/hello-mapview.html}
\end{itemize}
